package eu.jk.performance.buffer;


public interface BufferPool<T> {


	/**
	 * 放置缓存
	 * 
	 * @param key
	 * @param value
	 * 
	 */
	public void put(String key, T value);


	/**
	 * 取出key对应的混存内容
	 * 
	 * @param key
	 * @return key对应的值,如果不存在返回null
	 */
	public T get(String key);

	/**
	 * 删除key和其对应的值
	 * 
	 * @param key
	 * @return key对应的值,或者null
	 */
	public T remove(String key);
	
	/**
	 * 是否存在key指定的键值对
	 * @param key
	 * @see java.util.HashMap#containsKey(Object)
	 * @return 存在key,返回true,不存在,返回false
	 */
	public boolean contains(String key);

	/**
	 * 获得空闲Items存储位数目
	 * @return int
	 */
	public int getFreeSize();
	
	/**
	 * 获得总共Items存储位数目
	 * @return int
	 */
	public int getTotalSize();
	
	/**
	 * 获得已用Items存储位数目
	 * @return int
	 */
	public int getUsedSize();
	
	/**
	 * 改变存储位数目，如果将size改小，多出来的已缓存内容将会被转存到磁盘上。
	 */
	public void resize(int size);
	
	/**
	 * 关闭，清理资源。
	 */
	public void close();
}

